Using autonomous vehicles in a taxi service

ABSTRACT

Technology is described for operating a fleet of autonomous vehicles. A request for a taxi service may be received from a mobile device. The request may include a current location of the mobile device. They request may indicate that the taxi service is to be performed at a current time. An autonomous vehicle may be selected from the fleet of autonomous vehicles to perform the taxi service based in part on an availability of the autonomous vehicle and a proximity between the autonomous vehicle and the current location of the mobile device. Instructions may be provided to the autonomous vehicle to perform the taxi service according to the request. The autonomous vehicle may be configured to provide commands to drive the autonomous vehicle to the current location of the mobile device in order to perform the taxi service.

BACKGROUND

Autonomous vehicles, such as self-driving cars, may operate with minimalor substantially no human input. For example, a passenger may enter adestination at a console of the autonomous vehicle, such as a touchscreen, and the autonomous vehicle may navigate itself to thedestination (e.g., a movie theater) by sensing its surroundingenvironment. The autonomous vehicle may sense its surroundings using acombination of sensors, cameras, radar, light detection and ranging(LIDAR), global positioning system (GPS), etc.

Autonomous vehicles offer a large number of benefits as compared totraditional automobiles. For example, autonomous vehicles may reducetraffic collisions due to the autonomous vehicle's increased reliabilityand improved reaction time as compared to human drivers. Autonomousvehicles may increase roadway capacity and reduce traffic congestion. Inaddition, passengers that are under age, elderly, disabled, intoxicated,or otherwise impaired may benefit from traveling in autonomous vehicles.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system and related operations for dispatching anautonomous vehicle to perform a taxi service according to an example ofthe present technology.

FIG. 2A is an illustration of a networked system for operating a fleetof autonomous vehicles according to an example of the presenttechnology.

FIG. 2B is an illustration of a networked system for performing taxiservices according to an example of the present technology.

FIG. 3 illustrates a system and related operations for dispatching anautonomous vehicle to perform a taxi service according to an example ofthe present technology.

FIG. 4 illustrates another system and related operations for dispatchingan autonomous vehicle to perform a taxi service according to an exampleof the present technology.

FIG. 5 illustrates a system and related operations for modifying a routewhen an autonomous vehicle is performing a taxi service according to anexample of the present technology.

FIG. 6 is a flowchart of a method for controlling an autonomous vehicleaccording to an example of the present technology.

FIG. 7 is a flowchart of a method for controlling an autonomous vehicleaccording to an example of the present technology.

FIG. 8 depicts functionality of an autonomous vehicle according to anexample of the present technology.

FIG. 9 illustrates an autonomous vehicle according to an example of thepresent technology.

FIG. 10 is a block diagram that provides an example illustration of acomputing device that may be employed in the present technology.

DETAILED DESCRIPTION

Technology is described for operating a plurality of autonomous vehiclesas part of a taxi service. One example of an autonomous vehicle is aself-driving car or a driverless car. A user may request a taxi serviceusing an application that is running on the user's mobile device. Thetaxi service may involve picking up the user at a pickup location at aselected pickup time and dropping off the user at a drop-off location.The mobile device may communicate with a taxi service control systemthat operates the plurality of autonomous vehicles within a definedgeographical region. The taxi service request may include a pickuplocation, a drop-off location and a selected pickup time. In oneexample, the taxi service request may include other details, such as thenumber of passengers to ride in the autonomous vehicle, a requestedvehicle type (e.g., a convertible), etc.

The taxi service control system may receive the taxi service requestfrom the user's mobile device, and based on the taxi service request,the taxi service control system may select an autonomous vehicle fromthe plurality of autonomous vehicles to perform the taxi service for theuser. In one example, the taxi service control system may dynamicallymaintain a list of autonomous vehicles that operate in the he definedgeographical area. The taxi service control system may use the list ofautonomous vehicle when selecting the autonomous vehicle to perform thetaxi service for the user. The list of autonomous vehicles may include acurrent location and a taxi service schedule for each of the autonomousvehicles. In addition, the list of autonomous vehicles may indicatewhether each autonomous vehicle is currently performing a taxi serviceor is available to perform taxi services.

In one example, the taxi service request may indicate that the selectedpickup time for the taxi service is a current time. In other words, theuser requests to be picked up at the pickup location as soon as possibleand driven to the drop-off location. The pickup location may be acurrent location associated with the mobile device or a specificlocation defined in the taxi service request. The taxi service controlsystem may select an autonomous vehicle that is currently available toperform the taxi service from the list of autonomous vehicles based onthe autonomous vehicle's current proximity or distance to the pickuplocation. For example, a first available autonomous vehicle that iscurrent located closer to the user as compared to a second availableautonomous vehicle may be selected to perform the taxi service over thesecond available autonomous vehicle. In addition, the taxi servicecontrol system may verify, based on the selected autonomous vehicle'staxi service schedule, that the selected autonomous vehicle does nothave any previously scheduled taxi services that conflict with the taxiservice for the user. In one example, the taxi service control systemmay calculate an estimated amount of time to perform the taxi servicefor the user (i.e., picking up the user and dropping off the user). Thetaxi service control system may use the estimated amount of time toverify that the taxi service does not conflict with the previouslyscheduled taxi services on the taxi service schedule.

In one example, the selected pickup time for the taxi service may be anupcoming time, as opposed to a current time. For example, the currenttime may be 1 PM and the user requests the taxi service at 4 PM. Thetaxi service control system may identify an autonomous vehicle that isavailable at the selected pickup time from the list of autonomousvehicles. The taxi service control system may select the autonomousvehicle based on an expected location of the autonomous vehicle prior tothe selected pickup time. In addition, the taxi service control systemmay verify that the taxi service does not conflict with previouslyscheduled taxi services for the autonomous vehicle.

After the autonomous vehicle is selected, the taxi service controlsystem may schedule the autonomous vehicle to perform the taxi servicefor the user at the selected pickup time. In other words, the taxiservice control system may instruct the selected autonomous vehicle toperform the taxi service for the user at the selected pickup time. Thetaxi service control system may send the pickup location (e.g., anaddress, geographical coordinates) and the drop-off location to theautonomous vehicle. In addition, the taxi service control system maysend a confirmation to the user that requested the taxi service, via theapplication on the user's mobile device, indicating that the autonomousvehicle is scheduled to arrive at the pickup location at the selectedtime (i.e., as soon as possible or an upcoming time).

When the user requests for the taxi service to be performed immediately(i.e., as soon as possible), the selected autonomous vehicle may begindriving to the pickup location immediately after receiving theinstructions from the taxi service control system. In addition, the taxiservice control system may calculate an estimated amount of time for theselected autonomous vehicle to arrive at the pickup location. The taxiservice control system may use real-time traffic information whencalculating the estimated amount of time for the selected autonomousvehicle to arrive at the pickup location. The taxi service controlsystem may include the estimated amount of time in the confirmation sentto the user's mobile device. The taxi service control system may alsonotify the user when the autonomous vehicle is near the pickup location(e.g., 2 minutes away) and/or when the autonomous vehicle has arrived atthe pickup location.

When the user requests for the taxi service to be performed at anupcoming time, the autonomous vehicle selected to perform the taxiservice may determine a time to begin driving from the autonomousvehicle's current location to the pickup location, such that theautonomous vehicle arrives at the pickup location at the selected pickuptime. In one example, the autonomous vehicle may use real-time trafficinformation when determining the time to start driving to the pickuplocation. The autonomous vehicle may arrive at the pickup location atthe selected pickup time, and send a notification to the user's mobiledevice indicating that the autonomous vehicle has arrived at the pickuplocation.

When the autonomous vehicle arrives at the pickup location, the user maybe granted access to the autonomous vehicle upon providing a form ofauthentication. For example, the autonomous vehicle may detect that theuser's mobile device is in proximity to the autonomous vehicle, andtherefore, the user is presumed to be carrying the mobile device and isauthorized to enter into the autonomous vehicle. As another example, thetaxi service control system may provide an access code in thenotification message to the user's mobile device. The user may correctlyenter the access code at the autonomous vehicle (e.g., on a keypad at anoutside door, on a screen inside the autonomous vehicle) in order forthe autonomous vehicle to begin driving to the drop-off location.

The autonomous vehicle may select a route to drive the user from thepickup location to the drop-off location. The route may be optimized toreduce a distance traveled and/or an amount of time to perform the taxiservice. The autonomous vehicle may drive from the pickup location tothe drop-off location in accordance with the route. In particular, oneor more processors of the autonomous vehicle may provide commands to theautonomous vehicle's actuators, thereby controlling steering,acceleration, braking and throttle of the autonomous vehicle.

In one example, the user may request for the route to be altered whenthe autonomous vehicle is traveling to the drop-off location. As anexample, the user may request to stop at a convenience store along theroute or pick up a friend on the way to the drop-off location. Therequest may be received at the taxi service control system. The taxiservice control system may verify that the request does not conflictwith previously scheduled taxi services for the autonomous vehicle, andif no conflict is found, the taxi service control system may instructthe autonomous vehicle to perform the user's request. The taxi servicecontrol system may calculate a cost associated with the taxi service.The taxi service control system, using bank account informationassociated with the user, may charge the user for the taxi service.

The autonomous vehicle may notify the taxi service control system whenthe taxi service is completed. The autonomous vehicle may perform asubsequent taxi service according to the autonomous vehicle's taxiservice schedule. Alternatively, the autonomous vehicle may return to abase location (e.g., a parking garage) and wait for an upcoming taxiservice (i.e., a taxi service that has already been scheduled) or untilthe taxi service control system instructs the autonomous vehicle toperform an additional taxi service. In one example, the autonomousvehicle may drive to a taxi company station in between taxi services forrefueling/recharging, maintenance, etc.

FIG. 1 illustrates an exemplary system and related operations fordispatching an autonomous vehicle 130 to perform a taxi service. Thetaxi service may involve the autonomous vehicle 130 driving to a pickuplocation to pick up a customer at a designated time, and then driving toa drop-off location in order to drop off the customer. The autonomousvehicle 130 may be included in a fleet of autonomous vehicles 130 thatprovide taxi services to a plurality of customers. The fleet ofautonomous vehicles 130 may be operated by a taxi service provider. Thefleet of autonomous vehicles 130 may service a particular geographicalarea, such as a specific country, state, county, region, city, etc.

In one example, a mobile device 120 may send a taxi service request to aserver 110 associated with the taxi service provider. The taxi servicerequest may indicate that a customer associated with the mobile device120 is requesting a taxi service from the taxi service provider. Thetaxi service request may include various details about the taxi service,such as a pickup location, a pickup time, a drop-off location, adrop-off time, vehicle type, etc. In one example, the taxi servicerequest may indicate for the pickup time to be as soon as possible. Inother words, the customer may request for the taxi service to beperformed as soon as an autonomous vehicle 130 is available to pick upthe customer at the pickup location.

The server 110 may select a particular autonomous vehicle 130 from thefleet of autonomous vehicles 130 to perform the taxi service for thecustomer. The autonomous vehicle 130 may be selected based on acombination of: a distance between the autonomous vehicle's currentlocation and the pickup location, availability, features, seatingcapacity, etc. In addition, the server 110 may ensure that the selectedautonomous vehicle 130 is not already scheduled to perform taxi servicesthat conflict with the taxi service currently being scheduled. In otherwords, the server 110 may ensure that the selected autonomous vehicle130 is free for the estimated duration of time needed to perform thetaxi service for the customer.

In one example, the server 110 may instruct the selected autonomousvehicle 130 to perform the taxi service. The server 110 may sendinformation related to the taxi service to be performed at theautonomous vehicle 130, such as the pickup location, drop-off location,etc. In addition, the server 110 may send a confirmation message to themobile device 120 confirming that the autonomous vehicle 130 will pickup the customer at the pickup location. The server 110 may also providean estimated amount of time (e.g., 15 minutes) for the autonomousvehicle 130 to arrive at the pickup location. The autonomous vehicle130, after receiving the instructions from the server 110, may startdriving from a current location to the pickup location in order tofulfill the taxi service request from the customer.

In the following discussion, a general description of an example systemfor operating a fleet of autonomous vehicles in a taxi service and thesystem's components are provided. The general description is followed bya discussion of the operation of the components in a system for thetechnology. FIG. 2A illustrates a networked environment 200 a accordingto one example of the present technology. The networked environment 200a may include one or more computing devices 210 a in data communicationwith a client 280 by way of a network 275. The network 275 may includethe Internet, intranets, extranets, wide area networks (WANs), localarea networks (LANs), wired networks, wireless networks, or othersuitable networks, etc., or any combination of two or more suchnetworks. In one example, the computing device 210 a may be included ina taxi service control system 215. The taxi service control system 215may be associated with a particular taxi service provider that operatesand maintains a fleet of autonomous vehicles 205.

Various applications, services and/or other functionality may beexecuted in the computing device 210 a according to varying embodiments.Also, various data may be stored in a data store 220 that is accessibleto the computing device 210 a. The term “data store” may refer to anydevice or combination of devices capable of storing, accessing,organizing, and/or retrieving data, which may include any combinationand number of data servers, relational databases, object orienteddatabases, simple web storage systems, cloud storage systems, datastorage devices, data warehouses, flat files, and data storageconfiguration in any centralized, distributed, or clustered environment.The storage system components of the data store may include storagesystems such as a SAN (Storage Area Network), cloud storage network,volatile or non-volatile RAM, optical media, or hard-drive type media.The data stored in the data store 220, for example, may be associatedwith the operation of the various applications and/or functionalentities described below.

The data stored in the data store 220 may include a list of autonomousvehicles 222. The list of autonomous vehicles 222 may include a currentstatus of each autonomous vehicle 205 that is operated by the taxiservice provider. The autonomous vehicles on the list 222 may be limitedto operating within a defined geographical area. In one configuration,the list of autonomous vehicles 222 may include, for each autonomousvehicle 205 on the list, a current location of the autonomous vehicle205 and a taxi schedule associated with that autonomous vehicle 205. Thecurrent status for each autonomous vehicle 205 on the list 222 maydynamically change as the autonomous vehicles 205 start performing taxiservices and finish performing taxi services. Based on the taxischedule, whether a particular autonomous vehicle 205 is currentlyperforming a taxi service or is available to perform a taxi service maybe determined. As a non-limiting example, the list 222 may includestatus information for vehicle A and vehicle B. According to the list222, vehicle A may be at location A and is currently performing a taxiservice for another 30 minutes, and vehicle B may be at location B andis currently available to perform taxi services for another two hours.The list of autonomous vehicles 222 may be used when selecting aparticular autonomous vehicle 205 from the list 222 to perform aparticular taxi service.

The components executed on the computing device 210 a may include a taxiservice request module 230, a selection module 232, an instructionmodule 234, a notification module 236, a scheduling module 238, andother applications, services, processes, systems, engines, orfunctionality not discussed in detail herein. The taxi service requestmodule 230 may be configured to receive a taxi service request from theclient 280. The client 280 may be associated with a passenger that isrequesting the taxi service. The taxi service may involve picking up apassenger at a defined pickup location and dropping off the passenger ata defined drop-off location. In one example, the taxi service requestmay include a selected pickup time for performing the taxi service. Theselected pickup time may be a current time (i.e., the passenger requestsan immediate taxi service), or alternatively, the selected pickup timemay be an upcoming pickup time. The taxi service request may define thepickup location to be the client's current location, or alternatively,the passenger may indicate a specific pickup location in the taxiservice request. In addition, the taxi service request may include avariety of additional details about the taxi service, such as thedrop-off location, a number of passengers, a preferred vehicle type,etc.

The selection module 232 may be configured to select an autonomousvehicle 205 from the fleet of autonomous vehicles 205 to perform thetaxi service. In one example, the selection module 232 may select theautonomous vehicle 205 based on the autonomous vehicle's availability toperform the taxi service at the selected pickup time. In other words,autonomous vehicles with previously scheduled taxi services thatconflict or coincide with the taxi service may not be selected toperform the taxi service. The selection module 232 may assess theavailability of each autonomous vehicle 205 in the fleet to perform thetaxi service at the selected pickup time using the list of autonomousvehicles 222. In addition, the selection module 232 may select theautonomous vehicle 205 based on the autonomous vehicle's currentproximity (or expected proximity) to the pickup location at the selectedpickup time. As a non-limiting example, between a first autonomousvehicle that is two miles away from the pickup location and a secondautonomous vehicle that is five miles away from the pickup location, theselection module 232 may select the first autonomous vehicle to performthe taxi service. In one configuration, the selection module 232 mayselect the autonomous vehicle 205 based on the additional details in thetaxi service request, such as the preferred vehicle type or the numberof passengers. In one example, when the request is for an immediate taxiservice, the selection module 232 may select an available autonomousvehicle 205 from the fleet of autonomous vehicles that is capable ofdriving to the pickup location in a least amount of time.

The instruction module 234 may be configured to provide instructions tothe autonomous vehicle 205 that is selected from the fleet of autonomousvehicles to perform the taxi service. In other words, the instructionmodule 234 may provide the pickup location, a selected pickup time atwhich the autonomous vehicle 205 is to arrive at the pickup location,and the drop-off location. In one example, the instruction module 234may provide a route for which the autonomous vehicle 205 is to followwhen traveling from the autonomous vehicle's current location to thepickup location, and the route for which the autonomous vehicle 205 isto follow when traveling from the pickup location to the drop-offlocation. In one configuration, the instruction module 234 may instructthe autonomous vehicle 205 to perform a modified taxi service inaccordance with an additional request from the client 280. In yetanother configuration, the instruction module 234 may instruct theautonomous vehicle 205 to drive to a default parking area (e.g., aparking garage) after completing the taxi service and wait forinstructions to perform an additional taxi service.

The notification module 236 may be configured to send a notification tothe client 280 confirming that the autonomous vehicle 205 is scheduledto arrive at the pickup location (e.g., a current location of the client280). In one example, when the request is for an immediate taxi service,the notification may include an estimated arrival time at the pickuplocation. In one example, the notification module 236 may send anothernotification to the client 280 after the autonomous vehicle 205 hasarrived at the pickup location. The notification module 236 may send yetanother notification with an updated estimated arrival time when theautonomous vehicle 205 is delayed due to road traffic.

The scheduling module 238 may be configured to add the taxi service tothe autonomous vehicle's schedule 225 of taxi services to be performed.The scheduling module 238 may add the taxi service to the autonomousvehicle's schedule 225 after the autonomous vehicle 205 is selected toperform the taxi service. The taxi service may be performed immediatelyby the autonomous vehicle 205 or at a later time. The autonomous vehicle205 (as well as the computing device 210 a) may maintain the schedule225 of taxi services to be performed at the autonomous vehicle 205. Theautonomous vehicle 205 may perform the taxi services in accordance withthe schedule 225. The scheduling module 238 may dynamically update theautonomous vehicle's schedule 225 of taxi services to perform based onincoming taxi service requests. In other words, the scheduling module238 may dynamically add, delete or modify the taxi services on theautonomous vehicle's schedule 225 based on the incoming taxi servicerequests.

In the following discussion, a general description of an example systemfor performing taxi services and the system's components are provided.The general description is followed by a discussion of the operation ofthe components in a system for the technology. FIG. 2B illustrates anetworked environment 200 b according to one example of the presenttechnology. The networked environment 200 b may include one or morecomputing devices 210 b in data communication with the client 280 by wayof the network 275. In one example, the computing device 210 b may beincluded in the autonomous vehicle 205.

The components executed on the computing device 210 b may include aninstruction module 240, a route selection module 242, a control module244, an authentication module 246, a notification module 248, and otherapplications, services, processes, systems, engines, or functionalitynot discussed in detail herein. The instruction module 240 may beconfigured to receive instructions from a taxi service control system215. The instructions may be for performing a taxi service in accordancewith the taxi service request received from the client 280. Theinstructions may include a pickup location, a selected pickup time atwhich the autonomous vehicle 205 is to arrive at the pickup location,and a drop-off location. In one example, the pickup location and thedrop-off location may be described by an address, geographicalcoordinates, etc. The selected pickup time may be defined to be as soonas possible, or alternatively, the selected pickup time may be definedas a later time.

The route selection module 242 may be configured to determine one ormore routes for performing the taxi service. For example, the routeselection module 242 may determine a route for which the autonomousvehicle 205 is to follow when traveling from the autonomous vehicle'scurrent location to the pickup location. In addition, the routeselection module 242 may determine a route for which the autonomousvehicle 205 is to follow when traveling from the pickup location to thedrop-off location. In one example, the route selection module 242 mayuse traffic information, distance information, estimated travel times,etc. when determining the routes for the taxi service.

The control module 244 may be configured to provide commands to drivethe autonomous vehicle 205 from the autonomous vehicle's currentlocation to the pickup location according to the selected route in orderto perform the taxi service. In particular, the control module 244 mayprovide commands to the autonomous vehicle's actuators, therebycontrolling steering, acceleration, braking and throttle of theautonomous vehicle 205. In addition, the control module 244 may providecommands to drive the autonomous vehicle 205 from the pickup location tothe drop-off location. After the autonomous vehicle 205 drops off thepassenger at the drop-off location, the control module 244 may providecommands to drive the autonomous vehicle 205 from the drop-off locationto another pickup location to perform a subsequent taxi service, oralternatively, the control module 244 may provide commands to drive toautonomous vehicle 205 to a default location until the subsequent taxiservice is ready to be performed.

The authentication module 246 may be configured to authenticate thepassenger at the pickup location before permitting the passenger toenter into the autonomous vehicle 205. In other words, theauthentication module 246 may verify that the passenger at the pickuplocation submitted the taxi service request and is authorized to enterinto the autonomous vehicle 205. In one example, the authenticationmodule 246 may detect that the client 280 is in proximity to theautonomous vehicle 205, and therefore, the passenger is presumed to becarrying the client 280 and is authorized to enter into the autonomousvehicle 205. As another example, the taxi service control system 215 mayprovide the authentication code to the client 280 when the taxi serviceis successfully arranged for the passenger. The passenger may providethe authentication code to the autonomous vehicle 205 after theautonomous vehicle 205 arrives at the pickup location. For example, theauthentication code may be provided on a keypad at an outside door ofthe autonomous vehicle 205 or on a user interface inside the autonomousvehicle 205. The authentication module 246 may verify the authenticationcode, and upon a successful verification, the autonomous vehicle 205 maystart performing the taxi service.

The notification module 248 may be configured to notify the taxi servicecontrol system 215 after instructions to perform a taxi service aresuccessfully received from the taxi service control system 215. Inaddition, the notification module 248 may notify the taxi servicecontrols system 215 after the taxi service has been completed and theautonomous vehicle 205 is ready to perform additional taxi services. Inone configuration, the notification module 248 may send a notificationto the client 280 after the autonomous vehicle 205 has arrived at thepickup location.

Certain processing modules may be discussed in connection with thistechnology and FIGS. 2A-2B. In one example configuration, a module ofFIGS. 2A-2B may be considered a service with one or more processesexecuting on a server or other computer hardware. Such services may becentrally hosted functionality or a service application that may receiverequests and provide output to other services or customer devices. Forexample, modules providing services may be considered on-demandcomputing that are hosted in a server, cloud, grid, or cluster computingsystem. An application program interface (API) may be provided for eachmodule to enable a second module to send requests to and receive outputfrom the first module. Such APIs may also allow third parties tointerface with the module and make requests and receive output from themodules. Third parties may either access the modules usingauthentication credentials that provide on-going access to the module orthe third party access may be based on a per transaction access wherethe third party pays for specific transactions that are provided andconsumed.

As shown in FIGS. 2A-2B, the computing device 210 a-b may comprise, forexample, a server computer or any other system providing computingcapability. For purposes of convenience, the computing device 210 a-b isreferred to herein in the singular. Even though the computing device 210a-b is referred to in the singular, it is understood that a plurality ofcomputing devices 210 a-b may be employed.

As shown in FIGS. 2A-2B, the client 280 may be representative of aplurality of client devices that may be coupled to the network 275. Theclient 280 may comprise, for example, a processor-based system such as acomputer system. Such a computer system may be embodied in the form of alaptop computer, personal digital assistants, cellular telephones,smartphones, tablet computer systems, or other devices with likecapability.

The client 280 may include a request module 282 configured to send ataxi service request to the taxi service control system 215. The taxiservice request may include a selected pickup time. In one example, theselected pickup time may be a current time (i.e., the passenger requestsan immediate taxi service), or alternatively, the selected pickup timemay be an upcoming time. The taxi service request may include the pickuplocation. In one example, the pickup location may be the client'scurrent location, or alternatively, the pickup location may be aspecific location defined by the passenger in the taxi service request.

The client 280 may include a notification module 284 configured toreceive notifications from the autonomous vehicle 205 and/or the taxiservice control system 215. For example, the notification module 284 mayreceive a confirmation that the autonomous vehicle 205 is to arrive atthe pickup location at the selected pickup time. The notification module284 may receive a notification when the autonomous vehicle 205 hasarrived at the pickup location. In addition, the notification module 284may receive an additional notification with an updated estimated arrivaltime when the autonomous vehicle 205 is delayed due to road traffic orother reasons.

The client 280 may include or be coupled to an output device 286. Theoutput device 286 may comprise, for example, one or more devices such ascathode ray tubes (CRTs), liquid crystal display (LCD) screens, gasplasma-based flat panel displays, LCD projectors, or other types ofdisplay devices, etc.

FIG. 3 illustrates an exemplary system and related operations fordispatching an autonomous vehicle 330 to perform a taxi service. Theautonomous vehicle 330 may be included in a fleet of autonomous vehicles330 that provide taxi services to a plurality of customers. The fleet ofautonomous vehicles 330 may service a particular geographical area, suchas a specific country, state, county, region, city, etc. The fleet ofautonomous vehicles 330 may be controlled by a taxi service provider viaa server 310. In other words, the server 310 may receive taxi servicerequests from customers, and select autonomous vehicles 330 to performthe taxi services. The taxi service may involve the autonomous vehicle330 driving to a pickup location to pick up a customer at a selectedpickup time, and then driving to a drop-off location to drop off thecustomer.

In one configuration, the customer may send taxi service requests to theserver 310 using an application 322 that is executing on a mobile device320. The customer may download and install the application 322 on themobile device 320. In one example, the customer may register with theserver 310 upon installation of the application 322 on the mobile device320, during which time the customer may provide personal information(e.g., name, age, home address, bank information) to the server 310.After completion of the registration process, the customer may send taxiservice request to the server 310 via the application 322 that isexecuting on the mobile device 320. The customer may send the taxiservice request to the server 310 in order to request a taxi servicefrom the taxi service provider.

The taxi service request may include a number of details about the taxiservice requested from the customer. In one example, the taxi servicerequest communicated from the mobile device 320 to the server 310 mayinclude a selected pickup time. In one example, the taxi service requestmay define the pickup time to be a current time. In other words, thecustomer may request for the taxi service to be performed as soon aspossible.

In one example, the taxi service request communicated from the mobiledevice 320 to the server 310 may include a pickup location. The mobiledevice 320 may include an address or geographical coordinates associatedwith the pickup location in the taxi service request. Alternatively, thetaxi service request may include a name of a venue (e.g., a movietheater, a sports arena, a restaurant), and the server 310 may determinethe address of the venue in order to obtain the pickup location. In oneconfiguration, the mobile device 320 may determine its current location(e.g., using GPS), and then indicate to the server 310 that the mobiledevice's current location is the pickup location. In other words, thepickup location included in the taxi service request may be the currentlocation of the mobile device 320.

In one example, the taxi service request communicated from the mobiledevice 320 to the server 310 may include a drop-off location. The mobiledevice 320 may include the address of geographical coordinatesassociated with the drop-off location in the taxi service request.Alternatively, the taxi service request may include a name of thedestination, and the server 310 may determine the address of thedestination in order to obtain the drop-off location.

In one example, the taxi service request communicated from the mobiledevice 320 to the server 310 may include additional information or othercustomer requests. For example, the taxi service request may indicate anumber of passengers that are to ride in the autonomous vehicle 330. Thetaxi service request may indicate a particular type of vehicle that isdesired for the taxi service. For example, the taxi service request mayinclude a request for a 7-passenger van, a convertible, a sport utilityvehicle, a fuel-efficient vehicle, etc. The taxi service request mayinclude a preference for autonomous vehicles 330 with certain features,such as heated and cooled seats, massage seats, music systems, etc.

The server 310 may receive the taxi service request from the mobiledevice 320, wherein the taxi service request includes the selectedpickup time, the pickup location, the drop-off location, and theadditional information or customer requests. The server 310 may selectan autonomous vehicle 330 that is currently available to perform thetaxi service in accordance with the taxi service request. The server 310may select the autonomous vehicle 330 from the fleet of autonomousvehicles 330.

In one example, the server 310 may select the autonomous vehicle 330using a vehicle registry 312 that is maintained at the server 310. Thevehicle registry 312 may include a taxi service schedule for eachautonomous vehicle 330 in the fleet of autonomous vehicles 330. The taxiservice schedule may indicate whether the autonomous vehicle 330 iscurrently performing a taxi service or is available to perform a taxiservice. In other words, the taxi service schedule may indicate acurrent availability of the autonomous vehicle 330. In addition, thevehicle registry 312 may include a current location for each autonomousvehicle 330 in the fleet of autonomous vehicles 330. The currentlocation may indicate that the autonomous vehicle 330 is currentlyparked (i.e., stationary) on a particular street, parking garage, etc.Alternatively, the current location may indicate that the autonomousvehicle 330 is currently moving (i.e., performing a taxi service for adifferent customer).

The server 310 may access the vehicle registry 312 when selecting aparticular autonomous vehicle 330 from the fleet of autonomous vehicles330 to perform the taxi service for a customer. In one example, usingthe vehicle registry 312, the server 310 may identify an autonomousvehicle 330 from the fleet that is currently a shortest distance to thepickup location as compared to the other autonomous vehicles 330 in thefleet. In addition, the server 310 may calculate an estimated amount oftime for the autonomous vehicle 330 to perform the taxi service andverify that the autonomous vehicle 330 is currently available for theestimated amount of time in order to perform the taxi service. In otherwords, even if a particular autonomous vehicle 330 is currentlyavailable, if the estimated amount of time to perform the taxi serviceindicates that the taxi service may conflict with an upcoming taxiservice for the autonomous vehicle 330, then this particular autonomousvehicle 330 may not be selected to perform the taxi service for thecustomer. Since the server 310 may maintain the vehicle registry 312,which includes the taxi service schedules for each autonomous vehicle330 in the fleet of autonomous vehicles 330, the server 310 maydetermine in real-time which autonomous vehicles 330 in the fleet arecurrently available to perform the taxi service, and then select one ofthe autonomous vehicles 330 to perform the taxi service accordingly. Theserver 310 may select the autonomous vehicle 330 based on a combinationof a distance between the autonomous vehicle's current location and thepickup location (e.g., the mobile device's current location) and vehicleavailability. In addition, the server 310 may select the autonomousvehicle 330 in accordance to the taxi service request received from themobile device 320 with respect to vehicle features, vehicle type ormodel, vehicle seating capacity, etc.

As a non-limiting example, the server 310 may determine that vehicle Aand vehicle B are both currently available to perform the taxi service.Vehicle A may be one mile from the pickup location and vehicle B may bethree miles from the pickup location, and based on the distance betweenthe vehicles and the pickup location, the server 310 may select vehicleA for performing the taxi service. However, if vehicle A does not havethe seating capacity requested by the customer, but vehicle B does havethe seating capacity, then the server 310 may select vehicle B, eventhough vehicle B is further away from the pickup location as vehicle A(which may result in a delayed pickup time). Therefore, the server 310may weigh numerous factors (e.g., vehicle distance, vehicleavailability, vehicle features) when selecting the autonomous vehicle330 to perform the taxi service.

In one configuration, the server 310 may provide to the mobile device320 a list of available autonomous vehicles 330 that are located inproximity to the pickup location. Each of the autonomous vehicles 330 onthe list may be available to perform the taxi service for the customer.The list may include the features and capabilities of each availableautonomous vehicle 330, and the customer may select which autonomousvehicle 330 is to perform the taxi service. Therefore, the customer mayweigh factors such as the autonomous vehicle's capacity and capability,an amount of time to be picked up, a cost associated with each vehicletype, etc. when determining which autonomous vehicle 330 is to performthe taxi service.

The server 310 may instruct the autonomous vehicle 330 that is selectedto perform the taxi service for the customer. The server 310 may sendinformation on the selected pickup time, pickup location and drop-offlocation to the autonomous vehicle 330. In one configuration, the server310 may provide the autonomous vehicle 330 with a route for travelingfrom the autonomous vehicle's current location to the pickup location,or alternatively, the autonomous vehicle 330 may generate the routebased on the autonomous vehicle's current location and the pickuplocation. The autonomous vehicle 330 may send a message acknowledgingthat the autonomous vehicle 330 will perform the taxi service for thecustomer.

In one example, the server 310 may update or modify the vehicle registry312 to indicate that the selected autonomous vehicle 330 is currentlyperforming the taxi service. In particular, the server 310 may updatethe taxi service schedule associated with the autonomous vehicle 330 toreflect the new taxi service being performed by the autonomous vehicle330. The server 310 may update the taxi service schedule in order tomaintain up-to-date information on the taxi services to be performed bythe autonomous vehicle 330.

After selecting the autonomous vehicle 330 to perform the taxi service,the server 310 may calculate an estimated arrival time for theautonomous vehicle 330 to arrive at the pickup location. In other words,the server 310 may estimate an amount of time for the selectedautonomous vehicle 330 to travel from the autonomous vehicle's currentlocation (e.g., a parking garage) to the pickup location. The server 310may calculate the estimated arrival time based on a distance between theautonomous vehicle's current location and the pickup location, trafficinformation, etc.

In one example, the server 310 may send a confirmation message to themobile device 320 after scheduling the autonomous vehicle 330 to performthe taxi service. The confirmation message may confirm that the taxiservice is to be performed. The confirmation message may include theestimated arrival time for the autonomous vehicle 330. In addition, theconfirmation message may confirm details of the taxi service to beperformed, such as the pickup location, drop-off location, vehicle type,estimated cost, etc.

After receiving instructions from the server 310 to perform the taxiservice, the autonomous vehicle 330 may drive from the autonomousvehicle's current location to the pickup location. The autonomousvehicle 330 may have been stationed at a base location, such as aparking lot or parking garage. After receiving instructions from theserver 310, the autonomous vehicle 330 may exit its current location andstart driving to the pickup location. In one example, one or moreprocessors of the autonomous vehicle 330 may provide commands to drivethe autonomous vehicle 330 from the autonomous vehicle's currentlocation to the pickup location. The one or more processors may providecommands to the autonomous vehicle's actuators, thereby controllingsteering, acceleration, braking and throttle of the autonomous vehicle330.

In one example, based on the pickup location received from the server310, the autonomous vehicle 330 may determine a route for traveling fromthe autonomous vehicle's current location to the pickup location. Theautonomous vehicle 330 may use real-time traffic information whendetermining the route for traveling from the autonomous vehicle'scurrent location to the pickup location. The pickup location may be acurrent location associated with the mobile device 320, or a locationthat is specified in the taxi service request communicated from themobile device 320 to the server 310. In an alternative configuration,the server 310 may provide the route to the autonomous vehicle 330, andthe autonomous vehicle 330 may follow the route when driving to thepickup location.

In one example, the autonomous vehicle 330 may send a notification tothe mobile device 320 when the autonomous vehicle 330 is approaching thepickup location (e.g., when the autonomous vehicle 330 is five minutesaway from the pickup location), as well as an additional notificationwhen the autonomous vehicle 330 has arrived at the pickup location. Inone example, the autonomous vehicle 330 may determine that the pickuptime may be delayed, for example, due to traffic. The autonomous vehicle330 may calculate an adjusted pickup time based on traffic informationfor the route being used by the autonomous vehicle 330 to perform thetaxi service. The autonomous vehicle 330 may notify the mobile device320 of the adjusted pickup time. In an alternative configuration, theserver 310 may track the location of the autonomous vehicle 330 when theautonomous vehicle 330 is driving to the pickup location, and notify themobile device 320 when the autonomous vehicle 330 is in proximity toand/or has arrived at the pickup location.

In one configuration, the autonomous vehicle 330 may adjust one or moresettings and/or features of the autonomous vehicle 330 before arrivingat the pickup location. The autonomous vehicle 330 may adjust thesettings and/or features based on a user profile associated with themobile device 320. For example, the user profile may indicate that theindividual likes a certain type of music, a certain temperature setting,a certain seat position, a certain type of lighting, etc. Therefore, theautonomous vehicle 330 may adjust a music system, a heating and coolingsystem, a lighting system, etc. of the autonomous vehicle 330 tocorrespond with the user profile before arriving at the pickup location.

When the autonomous vehicle 330 arrives at the pickup location, thecustomer may be granted access to the autonomous vehicle 330 uponproviding a form of authentication. For example, the server 310 maypreviously send the customer a security code, and the customer mayprovide the security code to the autonomous vehicle 330 (e.g., via akeypad on the autonomous vehicle's door) in order to gain access to theautonomous vehicle 330. In another example, the autonomous vehicle 330may detect that the customer's mobile device 320 is in proximity to theautonomous vehicle 330, which may infer that the customer is carryingthe mobile device 320 that requested the taxi service. Therefore, theautonomous vehicle 330 may permit the customer to enter into theautonomous vehicle 330.

In one example, the autonomous vehicle 330 may drive from the pickuplocation to the drop-off location. The autonomous vehicle 330 may selecta route for traveling from the pickup location to the drop-off location.For example, the autonomous vehicle 330 may select an optimal routebased on real-time traffic information. The autonomous vehicle 330 maydrive from the pickup location to the drop-off location in accordancewith the route information. Alternatively, the server 310 may determinethe route for traveling to the drop-off location. The autonomous vehicle330 may receive route information from the server 310, and drive fromthe pickup location to the drop-off location in accordance with theroute information.

In one example, the autonomous vehicle 330 may arrive at the drop-offlocation and the customer may exit the autonomous vehicle 330. Thecustomer may be charged for the taxi service based on a distance betweenthe pickup location and the drop-off location and/or an amount of timetaken to travel from the pickup location to the drop-off location. Thecustomer may be charged for the taxi service using bank information orcredit card information that is maintained at the server 310. In oneexample, the server 310 may have received the bank information or creditcard information from the customer in the taxi service request.

In one example, the autonomous vehicle 330 may send a notification tothe server 310 when the taxi service is completed. The server 310 mayupdate the vehicle registry 312 to indicate that the autonomous vehicle330 has completed the taxi service. In one example, the server 310 maysend the autonomous vehicle 330 instructions to perform another taxiservice upon the server 310 receiving the notification from theautonomous vehicle 330. In another example, the autonomous vehicle 330may currently have no more taxi services to perform. In this case, theautonomous vehicle 330 may drive to a base location (e.g., a parking lotassociated with the taxi service provider), and wait to receive furtherinstructions from the server 310. The vehicle registry 312 may indicatethat the autonomous vehicle 330 is available to perform taxi serviceswhen the autonomous vehicle 330 is parked at the base location.Therefore, the server 310 may schedule the autonomous vehicle 330 toperform additional taxi services when the autonomous vehicle 330 isavailable and parked at the base location.

As a non-limiting example, a customer currently at a bookstore may wishto be dropped off at a sports arena. The customer may access a mobiledevice 320, and via an application 322 executing on the mobile device320, the customer may request a taxi service from a server 310 that isassociated with a taxi service provider. The taxi service request mayindicate the pickup location as the bookstore and the drop-off locationas the sports arena. In addition, the customer may request that the taxiservice be performed as soon as possible. The server 310 may select anautonomous vehicle 330 that is currently available and locatedrelatively close to the pickup location (i.e., the bookstore). Theserver 310 may send instructions to the autonomous vehicle 330 forperforming the taxi service. The instructions may include the selectedpickup time, the pickup location, the drop-off location, customeridentity information, etc. In addition, the server 310 may send aconfirmation message to the mobile device 320 to confirm that thecustomer will be picked up at the bookstore and transported to thesports arena. The confirmation message may include an estimated amountof time for the autonomous vehicle 330 to arrive at the bookstore (e.g.,ten minutes). The selected autonomous vehicle 330 may receive theinstructions from the server 310, and based on the instructions, theautonomous vehicle 330 may start driving to the pickup location (i.e.,the bookstore). The mobile device 320 may receive a notification whenthe autonomous vehicle 330 has arrived at the bookstore. The customermay provide a form of authentication (e.g., a security code) to enterinto the autonomous vehicle 330. The autonomous vehicle 330 may drive tothe sports arena and drop off the customer. Afterwards, the autonomousvehicle 330 may notify the server 310 that the taxi service is completedand the autonomous vehicle 330 is available to perform additional taxiservices. The autonomous vehicle 330 may drive to a selected location(e.g., a parking lot) and wait to receive additional instructions fromthe server 310 for additional taxi services.

FIG. 4 illustrates an exemplary system and related operations fordispatching an autonomous vehicle 430 to perform a taxi service. Theautonomous vehicle 430 may be included in a fleet of autonomous vehicles430 that provide taxi services to a plurality of customers. The fleet ofautonomous vehicles 430 may be controlled by a taxi service provider viaa server 410. In other words, the server 410 may receive taxi servicerequests from customers, and select autonomous vehicles 430 to performthe taxi services. The taxi service may involve the autonomous vehicle430 driving to a pickup location to pick up a customer at a selectedpickup time, and then driving to a drop-off location to drop off thecustomer.

In one example, a customer may send a taxi service request to the server410 via a mobile device 420. The taxi service request may indicate thatthe customer is requesting a taxi service from the taxi serviceprovider. The taxi service request may include various details about thetaxi service, such as a pickup location, a pickup time, a drop-offlocation and/or drop-off time. In one example, the pickup time may belater in the day, the following day, etc. In other words, the customermay request for the taxi service to be performed at a subsequent time.In one example, the taxi service request communicated from the mobiledevice 320 to the server 310 may include a drop-off time, but not thepickup time. Based on the drop-off time, the pickup location, and thedrop-off location, the server 310 may calculate the pickup time based ona distance between the pickup location and the drop-off location, aswell as estimated traffic conditions while the taxi service is beingperformed.

The server 410 may access a vehicle registry 412 that maintains aschedule for each autonomous vehicle 430 in the fleet of autonomousvehicles 430. Based on the vehicle registry 412, the server 410 mayidentify the autonomous vehicles 430 that are available to pick up thecustomer at the requested pickup time. In addition, the server 410 mayidentify the autonomous vehicles 430 that are expected to be located inproximity to the pickup location at the requested pickup time. Theserver 410 may select the autonomous vehicle 430 to perform the taxiservice based on the autonomous vehicle's availability at the requestedpickup time, an estimated proximity to the pickup location at therequested pickup time, vehicle features, vehicle seating capacity, etc.In addition, the server 410 may calculate an estimated amount of timefor the autonomous vehicle 430 to perform the taxi service and verify,based on the autonomous vehicle's schedule included in the vehicleregistry 412, that the autonomous vehicle 430 is available for theestimated amount of time in order to perform the taxi service.

The server 410 may instruct the autonomous vehicle 430 that is selectedto perform the taxi service for the customer. The server 410 may sendinformation on the selected pickup time, pickup location and drop-offlocation to the autonomous vehicle 430. The autonomous vehicle 430 mayperform the taxi service after receiving the instructions from theserver 410. In addition, the server 410 may send a confirmation messageto the mobile device 420 confirming that the autonomous vehicle 130 willpick up the customer at the pickup location and at the requested pickuptime.

In one example, the server 410 may update or modify the vehicle registry412 to indicate that the autonomous vehicle 430 is scheduled to performthe taxi service at the selected pickup time. After the taxi service isscheduled, the server 410 may not schedule other taxi services for theautonomous vehicle 430 that conflict with the taxi service.

In one example, a taxi service schedule 432 may be locally maintained atthe autonomous vehicle 430. The server 410 may update or modify the taxiservice schedule 432 to indicate that the autonomous vehicle 430 isscheduled to perform the taxi service at the selected pickup time. Theautonomous vehicle 430 may be configured to perform taxi services inaccordance with the taxi service schedule 432. For example, if the taxiservice schedule 432 indicates that the autonomous vehicle 430 isscheduled to perform three taxi services on a given day, the autonomousvehicle 430 may automatically perform the three taxi services unlesscontradictory instructions are received from the server 410.

In one example, the autonomous vehicle 430 may be parked at a baselocation prior to performance of the taxi service for the customer. Forexample, before the taxi service is to be performed, the autonomousvehicle 430 may be parked in a parking area associated with the taxiservice provider. The autonomous vehicle 430 may detect the taxi serviceto be performed based on the taxi service schedule 432 maintained at theautonomous vehicle 430. The autonomous vehicle 430 may determine when tostart driving from the base station in order to arrive at the pickuplocation at the requested pickup time. In one example, the autonomousvehicle 430 may use real-time traffic information to determine when toexit the base station in order to arrive at the pickup location at therequested pickup time.

In one example, the autonomous vehicle 430 may drive to the pickuplocation and then drop off the customer at the drop-off location. Theautonomous vehicle 430 may notify the server 410 that the taxi servicehas been completed. In addition, the autonomous vehicle 430 may indicatean availability to perform other taxi services to the server 410. Theautonomous vehicle 430 may drive back to the base location and wait toreceive further taxi service instructions from the server 410. In oneexample, the autonomous vehicle 430 may immediately perform another taxiservice in accordance with the taxi service schedule 432. In anotherexample, the autonomous vehicle 430 may be scheduled to perform anothertaxi service in two hours, so the autonomous vehicle 430 may drive backto the base location and wait until the next taxi service is ready to beperformed.

As a non-limiting example, a customer may request a taxi service to theairport for the following day. The customer may send via a mobile phone420, the request to a server 410 associated with a taxi serviceprovider. The customer may specify a pickup time (e.g., Saturday at 6AM), a pickup location (e.g., the customer's house), and the drop-offlocation (e.g., the airport). In addition, the customer may request avan with a seating capacity for seven passengers. Based on the vehicleregistry 412, the server 410 may select an autonomous vehicle 430 thatis available to perform the taxi service at the selected pickup time.The server 410 may verify that the autonomous vehicle 430 satisfies thecustomer's request with respect to seating capacity. The server 410 maysend instructions to the autonomous vehicle 430 for performing the taxiservice at the selected pickup time. The server 410 may update thevehicle registry 412 to reflect the newly scheduled taxi service. Inaddition, the server 410 may update the taxi service schedule 432 thatis locally maintained at the autonomous vehicle 430. The server 410 maysend a confirmation message to the mobile device 420 to confirm that thecustomer will be picked up at the customer's home at the selected pickuptime and driven to the airport. The autonomous vehicle 430 may drive tothe customer's home at the selected pickup time in accordance with thetaxi service schedule 432, and then drive to the airport in order todrop off the customer.

FIG. 5 illustrates an exemplary system and related operations formodifying a route when an autonomous vehicle 530 is performing a taxiservice. The autonomous vehicle 530 may be performing the taxi servicefor a customer. The customer may have sent a taxi service request, via amobile device 520, to a server 510 associated with a taxi serviceprovider. Based on the taxi service request, the autonomous vehicle 530may perform the taxi service.

In one example, when the autonomous vehicle 530 is driving from a pickuplocation to a drop-off location in accordance with the taxi service, themobile device 520 may send an additional request to the server 510 formodifying a route associated with the taxi service. In other words, themobile device 520 may send the additional request enroute to thedrop-off location. In one example, the customer may request to modifythe route, such that the autonomous vehicle 530 drives to an alternativedrop-off location. In another example, the customer may request tomodify the route, such that the autonomous vehicle 530 stops at adesignated location (e.g., an ice cream parlor), and then continuesdriving to the drop-off location.

The server 510 may receive the additional request to modify the taxiservice from the mobile device 520. The server 510 may verify that theadditional time needed to perform the modified taxi service does notconflict with previously scheduled taxi services for the autonomousvehicle 530. If there is no conflict, the server 510 may instruct theautonomous vehicle 530 to perform the modified taxi service inaccordance with the additional request received from the mobile device520. If there is a conflict with a previously scheduled task, then theserver 510 may notify the mobile device 520 that the existing route isunable to be modified. Alternatively, if there is a conflict between themodified taxi service and a previously scheduled task, the server 510may select another autonomous vehicle to perform the previouslyscheduled task and the autonomous vehicle 530 may perform the modifiedtaxi service.

As a non-limiting example, the autonomous vehicle 530 may be driving acustomer to a birthday party. While enroute to the birthday party, thecustomer may realize they have forgotten to buy a birthday gift. Thecustomer may send, via the mobile device 520, an additional request tomodify an existing taxi service to the server 510. In particular, thecustomer may request to stop at a department store, and then go to thebirthday party. The server 510 may determine to modify the route basedon the customer's request. The server 510 may send instructions to theautonomous vehicle 530 for modifying the route. Therefore, theautonomous vehicle 530 may stop at the department store, and thencontinue driving to the birthday party.

FIG. 6 illustrates an example of a method 600 for operating a fleet ofautonomous vehicles. The method may be executed as instructions on amachine, where the instructions are included on at least one computerreadable medium or one non-transitory machine readable storage medium.The method may be executed by one or more processors on the machine. Themethod may include the operation of receiving a request for a taxiservice from a mobile device, wherein the request includes a currentlocation of the mobile device and indicates that the taxi service is tobe performed at a current time, as in block 610. The method may includethe operation of selecting an autonomous vehicle from the fleet ofautonomous vehicles to perform the taxi service based in part on anavailability of the autonomous vehicle and a proximity between theautonomous vehicle and the current location of the mobile device, as inblock 620. The method may include the operation of providinginstructions to the autonomous vehicle to perform the taxi serviceaccording to the request, wherein the autonomous vehicle is configuredto provide commands to drive the autonomous vehicle to the currentlocation of the mobile device in order to perform the taxi service, asin block 630.

In one example, the request for the taxi service includes at least oneof: a pickup location, a drop-off location, a number of passengers, or aselected vehicle type. In one example, the method may include theoperations of: estimating an amount of time to perform the taxi servicebased, in part, on the current location of the mobile device and adrop-off location indicated in the request; and selecting the autonomousvehicle when the amount of time to perform the taxi service does notconflict with a previously scheduled taxi service for the autonomousvehicle.

In one example, the method may include the operations of: determining anestimated arrival time for the autonomous vehicle to arrive at thecurrent location of the mobile device; and sending a confirmation to themobile device that the autonomous vehicle is to arrive at the currentlocation of the mobile device in order to perform the taxi service andthe estimated arrival time. In one example, the method may include theoperation of sending an additional notification with an updatedestimated arrival time when the autonomous vehicle is delayed due toroad traffic. In one example, the method may include the operations of:tracking a location of the autonomous vehicle when the autonomousvehicle is driving to the current location of the mobile device; andsending a notification to the mobile device after the autonomous vehiclehas arrived at the current location of the mobile device.

In one example, the method may include the operations of: determiningthat the autonomous vehicle has completed the taxi service; and markingthe autonomous vehicle as being available to perform additional taxiservices. In one example, the method may include the operation ofinstructing the autonomous vehicle to drive to a default parking spaceafter completing the taxi service and wait for instructions to performan additional taxi service.

In one example, the method may include the operations of: addingadditional taxi services to a schedule associated with the autonomousvehicle; and sending the schedule to the autonomous vehicle, wherein theautonomous vehicle is configured to perform the additional taxi servicesin accordance with the schedule. In one example, the method may includethe operation of maintaining a list of autonomous vehicles thatincludes, for each autonomous vehicle on the list, a current location ofthe autonomous vehicle and a taxi schedule associated with theautonomous vehicle. In one example, the method may include theoperations of: receiving an additional request, from the mobile device,to modify a route associated with the taxi service in route to adrop-off location; verifying that the additional request to modify theroute does not conflict with a previously scheduled taxi service for theautonomous vehicle; and instructing the autonomous vehicle to perform amodified taxi service in accordance with the additional request from themobile device

FIG. 7 illustrates an example of a method 700 for operating a fleet ofautonomous vehicles. The method may be executed as instructions on amachine, where the instructions are included on at least one computerreadable medium or one non-transitory machine readable storage medium.The method may be executed by one or more processors on the machine. Themethod may include the operation of receiving a request for a taxiservice, the request including a pickup location and a selected time forthe taxi service, as in block 710. The method may include the operationof identifying an autonomous vehicle from a fleet of autonomous vehiclesthat is available to perform the taxi service at the selected time, asin block 720. The method may include the operation of adding the taxiservice to a schedule associated with the autonomous vehicle, whereinthe autonomous vehicle is configured to provide commands to drive theautonomous vehicle to the pickup location at the selected time inaccordance with the schedule and perform the taxi service, as in block730.

In one example, the autonomous vehicle is identified based, in part, onan estimated distance between the autonomous vehicle and the pickuplocation at the selected time. In one example, the method may includethe operation of sending a confirmation to a user indicating that theautonomous vehicle is scheduled to arrive at the pickup location atsubstantially the selected time. In one example, the method may includethe operations of: tracking a location of the autonomous vehicle whenthe autonomous vehicle is driving to the pickup location, wherein theautonomous vehicle is configured to use traffic information to determinea starting time for driving to the pickup location in order to arrive atthe pickup location at substantially the selected time; and sending anotification to a user after the autonomous vehicle has arrived at thepickup location.

Another example provides functionality 800 of an autonomous vehicle, asshown in the flow chart in FIG. 8. The functionality can be implementedas a method or the functionality can be executed as instructions on amachine, where the instructions are included on at least one computerreadable medium or one non-transitory machine readable storage medium.The method may be executed by one or more processors on the machine. Theautonomous vehicle may be configured to receive instructions to performa taxi service in accordance with a request for the taxi service, therequest indicating a pickup location, as in block 810. The autonomousvehicle may be configured to select a route for travelling to the pickuplocation, as in block 820. The autonomous vehicle may be configured toprovide commands to drive the autonomous vehicle to the pickup locationaccording to the route in order to perform the taxi service, as in block830.

In one example, the autonomous vehicle may verify that a user at thepickup location submitted the request for the taxi service beforepermitting the user to enter into the autonomous vehicle. In oneexample, the autonomous vehicle may select the route for traveling tothe pickup location based on traffic information. In one example, theinstructions indicate that the taxi service is to be performed at acurrent time or an upcoming time. In one example, the autonomous vehiclemay notify a taxi service system after the taxi service has beencompleted and the autonomous vehicle is available to perform additionaltaxi services.

FIG. 9 illustrates an example of an autonomous vehicle 900 that iscapable of sensing a surrounding environment and navigating itself to adestination. The autonomous vehicle 900 may be classified as a “Level 0”autonomous vehicle, a “Level 1” autonomous vehicle, a “Level 2”autonomous vehicle, a “Level 3” autonomous vehicle, or a “Level 4”autonomous vehicle. In Level 0, a driver may control the autonomousvehicle 900 at substantially all times. The driver may be in completeand sole control of primary vehicle controls, such as brake, steering,throttle and motive power. In Level 1, one or more individual controlsmay be automated in the autonomous vehicle 900, such as electronicstability control or automatic braking, in which the vehicle mayautomatically assist with braking to enable the driver to regain controlof the vehicle or stop faster than possible by acting alone. In Level 2,at least two controls may be automated in unison in the autonomousvehicle 900, such as adaptive cruise control in combination with lanekeeping. In Level 3, the driver may cede full control of substantiallyall safety-critical functions to the autonomous vehicle 900 undercertain traffic or environmental conditions. The autonomous vehicle 900may sense when certain conditions necessitate the driver to retakecontrol of the autonomous vehicle 900 and a sufficiently comfortabletransition time may be provided for the driver to retake control of theautonomous vehicle 900. In Level 4, the autonomous vehicle 900 mayperform substantially all safety-critical driving functions and monitorroadway conditions for an entire trip. The driver may providedestination or navigation input, but the driver may not be expected tocontrol the autonomous vehicle 900 at any time during the trip. As theautonomous vehicle 900 may control all functions from start to stop,including parking functions, in level 4, the autonomous vehicle 900 mayinclude both occupied and unoccupied vehicles. In one example, theautonomous vehicle 900 may be restricted to operating in certainenvironments or under certain conditions based on governmentregulations.

The autonomous vehicle 900 may include, but is not limited to, cars,trucks, motorcycles, buses, recreational vehicles, golf carts, trains,and trolleys. The autonomous vehicle 900 may include an internalcombustion engine that operates using liquid fuels (e.g., diesel,gasoline). Alternatively, the autonomous vehicle 900 may include one ormore electric motors that operate using electrical energy stored inbatteries. The autonomous vehicle 900 may include, but is not limitedto, a light detection and ranging (LIDAR) system 902, a video camera904, an inertial navigation system 906, radar sensors 908, ultrasonicsensors 910, a transceiver 912, and a computing device 914 that, whileworking together in combination, enable the autonomous vehicle 900 tosense the environment and navigate to the destination with reduced userinput. The autonomous vehicle 900 may use information captured by thevarious sensors, cameras, etc. to safely drive the autonomous vehicle900 along a route to a destination, while avoiding obstacles and obeyingtraffic laws. The autonomous vehicle 900 may perform a series of stepswhen following the route to the destination. For example, the autonomousvehicle 900 may drive 500 meters, turn right, drive 1000 meters, turnleft, etc. in order to reach the destination.

The LIDAR system 902 (also known as a laser range finder) may be mountedonto a surface (e.g., a top surface) of the autonomous vehicle 900. TheLIDAR system 902 may emit a plurality of light pulses and measure anamount of time for the light pulses to return to the autonomous vehicle900, thereby allowing the LIDAR system 902 to measure the distance ofobjects surrounding the autonomous vehicle 900. As a non-limitingexample, the LIDAR system 902 may measure the distance of objects within200 meters from the autonomous vehicle 900.

One or more video cameras 904 may be mounted to a front, rear or sideportion of the autonomous vehicle 900. The autonomous vehicle 900 mayuse the LIDAR system 902 and the video camera 904 to build athree-dimensional (3D) map of the autonomous vehicle's surroundings. The3D map may capture a 360-degree view around the autonomous vehicle 900.In one example, the 3D map may capture the autonomous vehicle'ssurroundings within 200 meters. The 3D map may include a variety offeatures, such as road edges, road signs, lane markings, guardrails,overpasses, etc. The 3D map may indicate stationary objects, such asbuildings, telephone poles, mailboxes, etc. In addition, the 3D map mayindicate moving objects, such as other vehicles, bicyclists,pedestrians, etc.

In one example, the 3D map generated using the LIDAR system 902 and thevideo camera 904 may be correlated with high-resolution maps of theworld. The high-resolution maps may indicate lane markings, terrain,elevation, speed limits, and other features related to the route takenby the autonomous vehicle 900 when driving to the destination. Inaddition, the autonomous vehicle 900 may position or localize itselfwithin the 3D map. In other words, the autonomous vehicle 900 maydetermine its position in relation to the objects included in the 3Dmap. The autonomous vehicle 900 may determine its position by using theinertial navigation system 906. The inertial navigation system 906 maycalculate a position, orientation, and velocity (i.e., direction andspeed of movement) of the autonomous vehicle 900.

The inertial navigation system 906 may include a combination ofgyroscopes, altimeters, tachometers, gyroscopes and other motion-sensingdevices in order to calculate the autonomous vehicle's position. Theinertial navigation system 906 may determine an initial position andvelocity, and thereafter compute the autonomous vehicle's updatedposition and velocity by integrating information received from themotion-sensing devices. In one example, a GPS receiver (not shown inFIG. 9) may provide the initial position of the autonomous vehicle 900(e.g., latitude, longitude, altitude). Thereafter, the autonomousvehicle 900 may use the inertial navigation system 906 to determine itsposition in relation to the objects on the 3D map. As the autonomousvehicle 900 drives to the destination, updated positional informationfrom the inertial navigation system 906 may continually update the 3Dmap of the autonomous vehicle's surroundings.

The radar sensors 908 may be mounted on front, rear and/or side sectionsof the autonomous vehicle 900. The radar sensors 908 may monitor aposition of proximately-located vehicles on the road, such as vehiclesimmediately behind or in front of the autonomous vehicle 900. Inaddition, ultrasonic sensors 910 may be used to measure a distance toproximately-located objects, such as curbs or other vehicles when theautonomous vehicle 900 is parking. The radar sensors 908 and theultrasonic sensors 910 may be used when generating and updating the 3Dmap of the autonomous vehicle's surroundings. For example, the radarsensors 908 and the ultrasonic sensors 910 may detect objects that arelocated in proximity to the autonomous vehicle 900 and those objects maybe included in the 3D map of the autonomous vehicle's surroundings.

The transceiver 912 may allow the autonomous vehicle 900 to communicatewith other devices or systems when driving to the destination. Forexample, the transceiver 912 may communicate with other vehicles on theroad using vehicle-to-vehicle (V2V) communication. V2V communication mayuse dedicated short-range communications (DSRC) and operate in the 5.9GHz frequency range. The range for V2V communication may beapproximately 300 meters. In addition, the transceiver 912 maycommunicate with computing devices (e.g., mobile phones, tabletcomputers) that provide instructions to the autonomous vehicle 900 viawireless communication standards, such as Third Generation PartnershipProject (3GPP) Long Term Evolution (LTE), Wi-Fi, WiMAX, Bluetooth, etc.The above list of wireless communication standards is non-limiting andis intended to include related wireless communication standards that areforthcoming. In one example, the transceiver 912 may enable theautonomous vehicle 900 to receive messages from the computing devices,such as messages requesting a pickup, messages instructing theautonomous vehicle 900 to perform a particular task, etc.

The computing device 914 may receive information collected and/orgenerated from the LIDAR system 902, the video cameras 904, the inertialnavigation system 906, the radar sensors 908, the ultrasonic sensors910, and the transceiver 912. The computing device 914 may process theinformation (e.g., the 3D map of the vehicle's surroundings) inreal-time and determine whether to modify the autonomous vehicle'scurrent velocity and orientation in response to the sensed environment.The computing device 914 may use the received information in order toprovide commands to the autonomous vehicle's actuators, therebycontrolling steering, acceleration, braking and throttle of theautonomous vehicle 900. The computing device 914 may perform the tasksof localization, 3D mapping, obstacle avoidance, path planning, etc.multiple times per second until the autonomous vehicle 900 reaches thedestination. In addition, the computing device 914 may include a datastore that stores various types of information, such as road speedlimits, traffic accidents, road construction work, etc. The computingdevice 914 may receive the information from a server via the transceiver912. The computing device 914 may use the various types of informationreceived from the server for making intelligent decisions when guidingthe autonomous vehicle 900 to the destination,

In one example, the computing device 914 or a portion of the computingdevice 914 may be in idle mode (e.g., a low power mode or a standbymode) when the autonomous vehicle 900 is shut off. For example, thecomputing device 914 may be in idle mode when the autonomous vehicle 900is parked in a parking space. The computing device 914 may periodicallycheck for messages that are received when the computing device 914 is inidle mode. For example, the computing device 914 may periodically checkfor messages received from a mobile device. The computing device 914 maytransition from idle mode into an on mode upon receiving a message thatinstructs the autonomous vehicle 900 to perform a task (e.g., drive to adestination). In one configuration, the computing device 914 or theportion of the computing device 914 may be powered via energy harvestingwhen in idle mode. For example, the computing device 914 may deriveenergy from external sources in order to receive messages from thedevice. The external sources may include, but is not limited to, solarpower, battery power, thermal power, wind energy, and kinetic energy.

FIG. 10 illustrates a computing device 1010 on which modules of thistechnology may execute. A computing device 1010 is illustrated on whicha high level example of the technology may be executed. The computingdevice 1010 may include one or more processors 1012 that are incommunication with memory devices 1020. The computing device may includea local communication interface 1018 for the components in the computingdevice. For example, the local communication interface may be a localdata bus and/or any related address or control busses as may be desired.

The memory device 1020 may contain modules 1024 that are executable bythe processor(s) 1012 and data for the modules 1024. The modules 1024may execute the functions described earlier. A data store 1022 may alsobe located in the memory device 1020 for storing data related to themodules 1024 and other applications along with an operating system thatis executable by the processor(s) 1012.

Other applications may also be stored in the memory device 1020 and maybe executable by the processor(s) 1012. Components or modules discussedin this description that may be implemented in the form of softwareusing high programming level languages that are compiled, interpreted orexecuted using a hybrid of the methods.

The computing device may also have access to I/O (input/output) devices1014 that are usable by the computing devices. An example of an I/Odevice is a display screen that is available to display output from thecomputing devices. Other known I/O device may be used with the computingdevice as desired. Networking devices 1016 and similar communicationdevices may be included in the computing device. The networking devices1016 may be wired or wireless networking devices that connect to theinternet, a LAN, WAN, or other computing network.

The components or modules that are shown as being stored in the memorydevice 1020 may be executed by the processor 1012. The term “executable”may mean a program file that is in a form that may be executed by aprocessor 1012. For example, a program in a higher level language may becompiled into machine code in a format that may be loaded into a randomaccess portion of the memory device 1020 and executed by the processor1012, or source code may be loaded by another executable program andinterpreted to generate instructions in a random access portion of thememory to be executed by a processor. The executable program may bestored in any portion or component of the memory device 1020. Forexample, the memory device 1020 may be random access memory (RAM), readonly memory (ROM), flash memory, a solid state drive, memory card, ahard drive, optical disk, floppy disk, magnetic tape, or any othermemory components.

The processor 1012 may represent multiple processors and the memory 1020may represent multiple memory units that operate in parallel to theprocessing circuits. This may provide parallel processing channels forthe processes and data in the system. The local interface 1018 may beused as a network to facilitate communication between any of themultiple processors and multiple memories. The local interface 1018 mayuse additional systems designed for coordinating communication such asload balancing, bulk data transfer, and similar systems.

While the flowcharts presented for this technology may imply a specificorder of execution, the order of execution may differ from what isillustrated. For example, the order of two more blocks may be rearrangedrelative to the order shown. Further, two or more blocks shown insuccession may be executed in parallel or with partial parallelization.In some configurations, one or more blocks shown in the flow chart maybe omitted or skipped. Any number of counters, state variables, warningsemaphores, or messages might be added to the logical flow for purposesof enhanced utility, accounting, performance, measurement,troubleshooting or for similar reasons.

Some of the functional units described in this specification have beenlabeled as modules, in order to more particularly emphasize theirimplementation independence. For example, a module may be implemented asa hardware circuit comprising custom VLSI circuits or gate arrays,off-the-shelf semiconductors such as logic chips, transistors, or otherdiscrete components. A module may also be implemented in programmablehardware devices such as field programmable gate arrays, programmablearray logic, programmable logic devices or the like.

Modules may also be implemented in software for execution by varioustypes of processors. An identified module of executable code may, forinstance, comprise one or more blocks of computer instructions, whichmay be organized as an object, procedure, or function. Nevertheless, theexecutables of an identified module need not be physically locatedtogether, but may comprise disparate instructions stored in differentlocations which comprise the module and achieve the stated purpose forthe module when joined logically together.

Indeed, a module of executable code may be a single instruction, or manyinstructions, and may even be distributed over several different codesegments, among different programs, and across several memory devices.Similarly, operational data may be identified and illustrated hereinwithin modules, and may be embodied in any suitable form and organizedwithin any suitable type of data structure. The operational data may becollected as a single data set, or may be distributed over differentlocations including over different storage devices. The modules may bepassive or active, including agents operable to perform desiredfunctions.

As used herein, the term “processor” can include general purposeprocessors, specialized processors such as VLSI, FPGAs, and other typesof specialized processors, as well as base band processors used intransceivers to send, receive, and process wireless communications.

The technology described here can also be stored on a computer readablestorage medium that includes volatile and non-volatile, removable andnon-removable media implemented with any technology for the storage ofinformation such as computer readable instructions, data structures,program modules, or other data. Computer readable storage media include,but is not limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tapes, magnetic disk storage orother magnetic storage devices, or any other computer storage mediumwhich can be used to store the desired information and describedtechnology.

The devices described herein may also contain communication connectionsor networking apparatus and networking connections that allow thedevices to communicate with other devices. Communication connections arean example of communication media. Communication media typicallyembodies computer readable instructions, data structures, programmodules and other data in a modulated data signal such as a carrier waveor other transport mechanism and includes any information deliverymedia. A “modulated data signal” means a signal that has one or more ofits characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, radiofrequency, infrared, and other wireless media. The term computerreadable media as used herein includes communication media.

Reference was made to the examples illustrated in the drawings, andspecific language was used herein to describe the same. It willnevertheless be understood that no limitation of the scope of thetechnology is thereby intended. Alterations and further modifications ofthe features illustrated herein, and additional applications of theexamples as illustrated herein, which would occur to one skilled in therelevant art and having possession of this disclosure, are to beconsidered within the scope of the description.

Furthermore, the described features, structures, or characteristics maybe combined in any suitable manner in one or more examples. In thepreceding description, numerous specific details were provided, such asexamples of various configurations to provide a thorough understandingof examples of the described technology. One skilled in the relevant artwill recognize, however, that the technology can be practiced withoutone or more of the specific details, or with other methods, components,devices, etc. In other instances, well-known structures or operationsare not shown or described in detail to avoid obscuring aspects of thetechnology.

Although the subject matter has been described in language specific tostructural features and/or operations, it is to be understood that thesubject matter defined in the appended claims is not necessarily limitedto the specific features and operations described above. Rather, thespecific features and acts described above are disclosed as exampleforms of implementing the claims. Numerous modifications and alternativearrangements can be devised without departing from the spirit and scopeof the described technology.

What is claimed is:
 1. At least one non-transitory machine readablestorage medium having instructions embodied thereon for operating afleet of autonomous vehicles, the instructions when executed perform thefollowing: receiving, using one or more processors, a request for a taxiservice from a mobile device, wherein the request includes a currentlocation of the mobile device and indicates that the taxi service is tobe performed at a current time; estimating an amount of time to performthe taxi service based, in part, on the current location of the mobiledevice and a drop-off location indicated in the request; selecting,using the one or more processors, an autonomous vehicle from the fleetof autonomous vehicles to perform the taxi service based in part on anavailability of the autonomous vehicle and a proximity between theautonomous vehicle and the current location of the mobile device, andthe autonomous vehicle is selected when the amount of time to performthe taxi service does not conflict with a previously scheduled taxiservice for the autonomous vehicle; and providing, using the one or moreprocessors, instructions to the autonomous vehicle to perform the taxiservice according to the request, wherein the instructions enable theautonomous vehicle to provide commands to drive the autonomous vehicleto the current location of the mobile device in order to perform thetaxi service.
 2. The at least one non-transitory machine readablestorage medium of claim 1, wherein the request for the taxi serviceincludes at least one of: a pickup location, the drop-off location, anumber of passengers, or a selected vehicle type.
 3. The at least onenon-transitory machine readable storage medium of claim 1, furthercomprising instructions which when executed by the one or moreprocessors performs the following: determining an estimated arrival timefor the autonomous vehicle to arrive at the current location of themobile device; and sending a confirmation to the mobile device that theautonomous vehicle is to arrive at the current location of the mobiledevice in order to perform the taxi service and the estimated arrivaltime.
 4. The at least one non-transitory machine readable storage mediumof claim 3, further comprising instructions which when executed by theone or more processors performs the following: sending an additionalnotification with an updated estimated arrival time when the autonomousvehicle is delayed due to road traffic.
 5. The at least onenon-transitory machine readable storage medium of claim 1, furthercomprising instructions which when executed by the one or moreprocessors performs the following: tracking a location of the autonomousvehicle when the autonomous vehicle is driving to the current locationof the mobile device; and sending a notification to the mobile deviceafter the autonomous vehicle has arrived at the current location of themobile device.
 6. The at least one non-transitory machine readablestorage medium of claim 1, further comprising instructions which whenexecuted by the one or more processors performs the following:determining that the autonomous vehicle has completed the taxi service;and marking the autonomous vehicle as being available to performadditional taxi services.
 7. The at least one non-transitory machinereadable storage medium of claim 1, further comprising instructionswhich when executed by the one or more processors performs thefollowing: instructing the autonomous vehicle to drive to a defaultparking space after completing the taxi service and wait forinstructions to perform an additional taxi service.
 8. The at least onenon-transitory machine readable storage medium of claim 1, furthercomprising instructions which when executed by the one or moreprocessors performs the following: adding additional taxi services to aschedule associated with the autonomous vehicle; and sending theschedule to the autonomous vehicle, wherein the autonomous vehicle isconfigured to perform the additional taxi services in accordance withthe schedule.
 9. The at least one non-transitory machine readablestorage medium of claim 1, further comprising instructions which whenexecuted by the one or more processors performs the following:maintaining a list of autonomous vehicles that includes, for eachautonomous vehicle on the list, a current location of the autonomousvehicle and a taxi schedule associated with the autonomous vehicle. 10.The at least one non-transitory machine readable storage medium of claim1, further comprising instructions which when executed by the one ormore processors performs the following; receiving an additional request,from the mobile device, to modify a route associated with the taxiservice in route to the drop-off location; verifying that the additionalrequest to modify the route does not conflict with a previouslyscheduled taxi service for the autonomous vehicle; and instructing theautonomous vehicle to perform a modified taxi service in accordance withthe additional request from the mobile device.
 11. At least onenon-transitory machine readable storage medium having instructionsembodied thereon for operating a fleet of autonomous vehicles, theinstructions when executed perform the following: receiving, using oneor more processors, a request for a taxi service, the request includinga pickup location and a selected time for the taxi service; estimatingan amount of time to perform the taxi service at the selected timebased, in part, on the pickup location and a drop-off location indicatedin the request; selecting, using the one or more processors, anautonomous vehicle from a fleet of autonomous vehicles that is availableto perform the taxi service at the selected time, and the autonomousvehicle is selected when the amount of time to perform the taxi serviceat the selected time does not conflict with a previously scheduled taxiservice for the autonomous vehicle; and adding, using the one or moreprocessors, the taxi service to a schedule associated with theautonomous vehicle, wherein the autonomous vehicle is configured toprovide commands to drive the autonomous vehicle to the pickup locationat the selected time in accordance with the schedule and perform thetaxi service.
 12. The at least one non-transitory machine readablestorage medium of claim 11, wherein the autonomous vehicle is identifiedbased, in part, on an estimated distance between the autonomous vehicleand the pickup location at the selected time.
 13. The at least onenon-transitory machine readable storage medium of claim 11, furthercomprising sending a confirmation to a user indicating that theautonomous vehicle is scheduled to arrive at the pickup location atsubstantially the selected time.
 14. The at least one non-transitorymachine readable storage medium of claim 11, further comprisinginstructions which when executed by the one or more processors performsthe following: tracking a location of the autonomous vehicle when theautonomous vehicle is driving to the pickup location, wherein theautonomous vehicle is configured to use traffic information to determinea starting time for driving to the pickup location in order to arrive atthe pickup location at substantially the selected time; and sending anotification to a user after the autonomous vehicle has arrived at thepickup location.
 15. An autonomous vehicle, comprising: a processor; amemory device including a data store to store a plurality of data andinstructions that, when executed by the processor, cause the processorto: receive instructions to perform a taxi service in accordance with arequest for the taxi service, the request indicating a pickup location;add the taxi service to a schedule of taxi services to be automaticallyperformed by the autonomous vehicle; select a route for travelling tothe pickup location; provide commands to drive the autonomous vehicle tothe pickup location according to the route in order to perform the taxiservice; notify a taxi service system after the taxi service has beencompleted and the autonomous vehicle is available to perform additionaltaxi services, as indicated in the schedule of taxi services maintainedat the autonomous vehicle; and provide commands to drive the autonomousvehicle to a default parking space after completing the taxi service andwait for instructions from the taxi service system to perform anadditional taxi service.
 16. The autonomous vehicle of claim 15, whereinthe plurality of data and instructions, when executed by the processor,cause the processor to: verify that a user at the pickup locationsubmitted the request for the taxi service before permitting the user toenter into the autonomous vehicle.
 17. The autonomous vehicle of claim15, wherein the plurality of data and instructions, when executed by theprocessor, cause the processor to: select the route for traveling to thepickup location based on traffic information.
 18. The autonomous vehicleof claim 15, wherein the instructions indicate that the taxi service isto be performed at a current time or an upcoming time.